home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / T-TPUG Old Monthly Disks / (c)tf.d64 / manager 64.c (.txt) < prev    next >
Commodore BASIC  |  2007-02-04  |  8KB  |  283 lines

  1. 1000 REM-------------------------------
  2. 1010 REM
  3. 1020 REM   MANAGER-64
  4. 1030 REM
  5. 1040 REM   A DISK DIRECTORY DRIVEN
  6. 1050 REM   UTILITY FOR COMPUTER
  7. 1060 REM   SESSION MANAGEMENT.
  8. 1070 REM
  9. 1080 REM   FOR THE COMMODORE 64
  10. 1090 REM
  11. 1100 REM   WRITTEN BY GLEN BODIE
  12. 1110 REM           90 KINGSMOUNT PK RD
  13. 1120 REM           TORONTO, ONTARIO
  14. 1130 REM           (416) 461-3483
  15. 1140 REM
  16. 1150 REM-------------------------------
  17. 1160 GOTO 1290
  18. 1170 REM
  19. 1180 REM---SPECIAL ROUTINES------------
  20. 1190 REM
  21. 1200 REM---CURSOR ON SCREEN
  22. 1210 REM
  23. 1220 A=SM+PEEK(211)+PEEK(214)*40
  24. 1230 POKE A,PEEK(A) OR 128
  25. 1240 GET A$: IF A$="" THEN GOTO 1240
  26. 1250 POKE A,PEEK(A) - 128: RETURN
  27. 1260 REM
  28. 1270 REM---INITIALIZE DATA-------------
  29. 1280 REM
  30. 1290 DD$="[255][255]": FOR I=1 TO 6: DD$=DD$+DD$: NEXT
  31. 1300 DD$=MID$(DD$,2): DD$=DD$+DD$
  32. 1310 PG=1  : MA=0  : DR=8  : SD=0: LD=1
  33. 1320 SA=828: CH=875: NT=876: NS=877
  34. 1330 R$=CHR$(13): Q$=CHR$(34): SD$="0"
  35. 1340 MA$(0)="[205]ANUAL": MA$(1)="[193]UTO  "
  36. 1350 C1$="CDLMNRS"
  37. 1360 C2$="ABCDFHMR"
  38. 1370 C3$="[145][157]"+R$+CHR$(20)
  39. 1380 C4(1)=3:C4(2)=4:C4(3)=12:C4(4)=13:C4(5)=14:C4(6)=18:C4(7)=19
  40. 1390 DIM C(15)
  41. 1400 FOR I=0 TO 15: READ C(I): NEXT
  42. 1410 DATA 144,5,28,159,156,30,31,158,129,149,150,151,152,153,154,155
  43. 1420 SM=(3-(PEEK(56576)AND3))*16384+INT(PEEK(53272)/16)*1024
  44. 1430 BC$=CHR$(144): PC$=CHR$(5)
  45. 1440 CC$=CHR$(31) : MC$=CHR$(28)
  46. 1450 DIM T$(24): T$(0)=""
  47. 1460 FORI=1TO24:T$(I)=T$(I-1)+"":NEXT
  48. 1470 T$(23)=T$(23)+CC$
  49. 1480 T$(24)=T$(24)+MC$
  50. 1490 CL$="                                       "
  51. 1500 CP$=T$(23)+">                                      [145]"+R$+""
  52. 1510 DIM PN$(143)
  53. 1520 FOR I=SA TO SA+49: READ X: POKE I,X: NEXT
  54. 1530 DATA 160,2,177,45,153,137,0,200
  55. 1540 DATA 192,6,208,246,174,107,3,32
  56. 1550 DATA 198,255,32,228,255,141,108
  57. 1560 DATA 3,32,228,255,141,109,3,32
  58. 1570 DATA 228,255,164,142,145,140,200
  59. 1580 DATA 132,142,196,139,208,242,76
  60. 1590 DATA 204,255,0,0,0
  61. 1600 POKE 53280,6: POKE 53281,12
  62. 1610 REM
  63. 1620 REM---LOAD DIRECTORY--------------
  64. 1630 REM
  65. 1640 IF LD=0 THEN GOTO 1790
  66. 1650 PRINT CHR$(14)CHR$(8)"[147][144][204]OADING DIRECTORY...."
  67. 1660 FOR I=0 TO 143: PN$(I)="": NEXT
  68. 1670 CLOSE 15: NP=0: OPEN 15,DR,15,"I"+SD$: T=18: S=1
  69. 1680 OPEN 2,DR,2,"#": POKE CH,2
  70. 1690 INPUT#15,EN,EM$: IF EN<>0 THEN GOTO 1750
  71. 1700 PRINT#15,"U1:";2;SD;T;S: INPUT#15,EN,EM$: IF EN<>0 THEN GOTO 1750
  72. 1710 SYS SA: FOR I=1 TO 254 STEP 32
  73. 1720 IF MID$(DD$,I+0,1)=CHR$(130) THEN PN$(NP)=MID$(DD$,I+3,16): NP=NP+1
  74. 1730 NEXT I: T=PEEK(NT): S=PEEK(NS)
  75. 1740 IF T<>0 THEN GOTO 1700
  76. 1750 CLOSE 2: CLOSE 15: LD=0: PN$(NP)="": NP=NP-1: MP=INT(NP/40)+1
  77. 1760 REM
  78. 1770 REM---DRAW SCREEN-----------------
  79. 1780 REM
  80. 1790 PRINT BC$"[147][208]AGE"PG"[157]/"MP"     [205][193][206][193][199][197][210]-64[146]        "MA$(MA)""
  81. 1800 PRINT "? ---------------- [221]? ---------------- "
  82. 1810 FOR I=3 TO 22: PRINT CC$" "TAB(19)BC$"[221]"CC$" ": NEXT
  83. 1820 PRINT CP$R$CL$;
  84. 1830 IF EN=0 THEN GOTO 1880
  85. 1840 EN=0: PRINT T$(24)EM$LEFT$(CL$,39-LEN(EM$));: FOR B=0 TO 3000: NEXT
  86. 1850 REM
  87. 1860 REM---DISPLAY FILE NAMES----------
  88. 1870 REM
  89. 1880 J=(PG-1)*40: K=J+39: IF K>NP THEN K=NP
  90. 1890 ML=INT((K-J)/2)+3: PRINT PC$;
  91. 1900 FOR I=J TO K STEP 2: L=INT((I-J)/2)+3
  92. 1910 PRINT T$(L)TAB(2)PN$(I)TAB(22)PN$(I+1);: NEXT
  93. 1920 REM
  94. 1930 REM---LOOP FOR COMMANDS-----------
  95. 1940 REM
  96. 1950 IF LD=1 THEN GOTO 1640
  97. 1960 L=3: C=0: A$=""
  98. 1970 PRINT CC$T$(L)TAB(C);
  99. 1980 GOSUB 1220
  100. 1990 IF L>22 THEN GOTO 2050
  101. 2000 IF PEEK(SM+L*40+C+2)=32 THEN GOTO 2080
  102. 2010 FOR I=1 TO LEN(C1$)
  103. 2020 IF A$=MID$(C1$,I,1) THEN GOTO 2040
  104. 2030 NEXT: GOTO 2080
  105. 2040 PRINT A$"[157]"T$(24)CL$;: GOTO 1970
  106. 2050 FOR I=1 TO LEN(C2$)
  107. 2060 IF A$=MID$(C2$,I,1) THEN GOTO 2820
  108. 2070 NEXT
  109. 2080 FOR I=1 TO LEN(C3$)
  110. 2090 IF A$=MID$(C3$,I,1) THEN GOTO 2140
  111. 2100 NEXT
  112. 2110 PRINT T$(24)"[[195][196][204][205][206][210][211]];[[193][194][195][196][198][200][205][210]];[195]SR/[210]TN/[200]OME/[196]EL/_";
  113. 2120 IF L<23 THEN GOTO 1970
  114. 2130 PRINT CP$;: GOTO 1980
  115. 2140 PRINT T$(24)CL$;: IF L>22 THEN GOTO 2770
  116. 2150 REM
  117. 2160 REM---C3$(I) AT L<23--------------
  118. 2170 REM
  119. 2180 PRINT CC$T$(L)TAB(C);: ON I GOTO 2190,2220,2240,2260,1960,2320,2280
  120. 2190 L=L-1: IF L<3 THEN L=23
  121. 2200 IF L<23 THEN GOTO 1970
  122. 2210 PRINT CP$;: GOTO 1980
  123. 2220 L=L+1: IF L>ML THEN L=23
  124. 2230 GOTO 2200
  125. 2240 IF C=20 THEN C=0: GOTO 2200
  126. 2250 C=20: GOTO 2190
  127. 2260 IF C=0 THEN C=20: GOTO 2200
  128. 2270 C=0: GOTO 2220
  129. 2280 PRINT CC$" [157]";: GOTO 1980
  130. 2290 REM
  131. 2300 REM---PROCESS THE SCREEN----------
  132. 2310 REM
  133. 2320 Y=0:FOR J=3TO22:FOR K=0TO20 STEP20
  134. 2330 ZZ=(PG-1)*40+(J-3)*2+INT(K/20)
  135. 2340 IF ZZ>NP THEN GOTO 2410
  136. 2350 XA=SM+(J*40)+K: X=PEEK(XA)
  137. 2360 IF X=32 OR X=160 THEN GOTO 2400
  138. 2370 FOR B=1 TO LEN(C1$)
  139. 2380 IF X=C4(B) OR X=C4(B)+128 THEN GOTO 2430
  140. 2390 NEXT
  141. 2400 NEXT: NEXT
  142. 2410 IF Y=1 THEN GOTO 1950
  143. 2420 PRINT "[147][144]": GOTO 3830
  144. 2430 CLOSE 15: OPEN 15,DR,15: Y=1
  145. 2440 N$=PN$(ZZ)
  146. 2450 ON B GOTO 2460,2560,2580,2610,2640,2670,2700
  147. 2460 PRINT T$(24)"[206]AME FOR COPY OF "Q$N$Q$"?"CP$;
  148. 2470 GOSUB 3680:IF X$="" THEN GOTO 2530
  149. 2480 PRINT#15,"C"SD$":"X$"="N$: LD=1: GOTO 2490
  150. 2490 BB=1000 :INPUT#15,EN,EM$
  151. 2500 IF EN<>0 THEN PRINT T$(24)EM$LEFT$(CL$,39-LEN(EM$));
  152. 2510 IF EN>1 THEN BB=4000: LD=0
  153. 2520 FOR B=0 TO BB: NEXT
  154. 2530 IF X>128 THEN POKE XA,160: GOTO 2550
  155. 2540 POKE XA,32
  156. 2550 PRINT CP$R$CL$;: GOTO 2400
  157. 2560 PRINT T$(24)"[196]ELETE "Q$N$Q$;
  158. 2570 PRINT#15,"S"SD$":"N$: LD=1: GOTO 2490
  159. 2580 PRINT "[147][144]LOAD"Q$SD$":"N$Q$","DR"
  160. 2600 [151] 631,13: [151] 198,1: [137] 3830
  161. 2610 [153] "LOADSTOPLOAD"Q$SD$":"N$Q$","DR",1"
  162. 2630 [151] 631,13: [151] 198,1: [137] 3830
  163. 2640 [153] T$(24)"(null)EW NAME FOR "Q$N$Q$"?"CP$;
  164. 2650 [141] 3680:[139] X$[178]"" [167] [137] 2530
  165. 2660 [152]15,"R"SD$":"X$"="N$: LD[178]1: [137] 2490
  166. 2670 [153] "LOADSTOPLOAD"Q$SD$":"N$Q$","DR
  167. 2680 [153] "RUN"
  168. 2690 [151] 631,13: [151] 632,13: [151] 198,2: [137] 3830
  169. 2700 [153] T$(24)"(null)YS ADDRESS FOR "Q$N$Q$"?"CP$;
  170. 2710 [141] 3530: [139] XX[179]0 [176] XX[177]65535 [167] [137] 2530
  171. 2720 [153] "LOADSTOPLOAD"Q$SD$":"N$Q$","DR",1"R$"SYS"XX
  172. 2730 [151] 631,13: [151] 632,13: [151] 198,2: [137] 3830
  173. 2740 [143]
  174. 2750 [143]---C3$(I) AT L>22--------------
  175. 2760 [143]
  176. 2770 [145] I [137] 2780,1960,2780,1960,1960,2320,2280
  177. 2780 L[178]ML: C[178]0: [137] 1970
  178. 2790 [143]
  179. 2800 [143]---C2$(I)----------------------
  180. 2810 [143]
  181. 2820 [153] CP$A$R$CL$;: [145] I [137] 2830,2870,2910,3100,2890,3220,2840,3090
  182. 2830 MA[178]1: [137] 2850
  183. 2840 MA[178]0
  184. 2850 [153] ""[163]33)BC$MA$(MA);
  185. 2860 [137] 2210
  186. 2870 PG[178]PG[171]1: [139] PG[179]1 [167] PG[178]MP
  187. 2880 [137] 1790
  188. 2890 PG[178]PG[170]1: [139] PG[177]MP [167] PG[178]1
  189. 2900 [137] 1790
  190. 2910 [153] T$(24)"VALNTER BORDER COLOUR (0-15):";
  191. 2920 [141] 3530: [139] XX[179][177][171]1 [167] [151] 53280,XX [175] 15
  192. 2930 [153] CP$R$MC$"VALNTER BACKGROUND COLOUR (0-15):";
  193. 2940 [141] 3530: [139] XX[179][177][171]1 [167] [151] 53281,XX [175] 15
  194. 2950 [153] CP$R$MC$"VALNTER COLOUR FOR TITLES (0-15):";
  195. 2960 [141] 3530: [139] XX[179][177][171]1 [167] BC$[178][199](C(XX [175] 15))
  196. 2970 [153] CP$R$MC$"VALNTER COLOUR FOR COMMANDS YOU TYPE:";
  197. 2980 [141] 3530: [139]XX[178][171]1 [167] [137] 3020
  198. 2990 CC$[178][199](C(XX [175] 15))
  199. 3000 T$(23)[178][200](T$(23),[195](T$(23))[171]1)[170]CC$
  200. 3010 CP$[178]T$(23)[170]">                                      ON"[170]R$[170]""
  201. 3020 [153] CP$R$MC$"VALNTER COLOUR FOR PROGRAM NAMES:    ";
  202. 3030 [141] 3530: [139] XX[179][177][171]1 [167] PC$[178][199](C(XX [175] 15))
  203. 3040 [153] CP$R$MC$"VALNTER COLOUR FOR ERROR MESSAGES:";
  204. 3050 [141] 3530: [139]XX[178][171]1 [167] [137] 3180
  205. 3060 MC$[178][199](C(XX [175] 15))
  206. 3070 T$(24)[178][200](T$(24),[195](T$(24))[171]1)[170]MC$
  207. 3080 [137] 3180
  208. 3090 LD[178]1: [137] 1640
  209. 3100 [153] T$(24)"VALNTER DESIRED DISK DRIVE ADDRESS (8-11)";
  210. 3110 [141] 3530: [139]XX[178][171]1 [167] [137] 3180
  211. 3120 [139] XX[179]8 [176] XX[177]11 [167] [137] 3100
  212. 3130 [139] DR[179][177]XX [167] DR[178]XX: LD[178]1
  213. 3140 [153] T$(24)"VALNTER DESIRED SUB-DRIVE NUMBER (0,1)   ";
  214. 3150 [141] 3530: [139]XX[178][171]1 [167] [137] 3180
  215. 3160 [139] XX[179]0 [176] XX[177]1 [167] [137] 3140
  216. 3170 [139] SD[179][177]XX [167] SD[178]XX: LD[178]1: SD$[178][199](48[170]SD)
  217. 3180 [153] CP$R$CL$;:[137] 1640
  218. 3190 [143]
  219. 3200 [143]---HELP SCREEN-----------------
  220. 3210 [143]
  221. 3220 [153] BC$"LOAD";
  222. 3230 [153] "LENOMMANDS BESIDE A FILE NAME:"
  223. 3240 [153] [163]3)MC$"LEN"[163]8)CC$"(null)AKE A CWAITOPY OF THIS FILE"
  224. 3250 [153] [163]3)MC$"STR$"[163]8)CC$"STR$WAITELETE THIS FILE"
  225. 3260 [153] [163]3)MC$"(null)"[163]8)CC$"(null)WAITOAD THIS FILE"
  226. 3270 [153] [163]3)MC$"(null)"[163]8)CC$"(null)OAD THIS (null)WAIT(null) FILE"
  227. 3280 [153] [163]3)MC$"(null)"[163]8)CC$"(null)ENWAITAME THIS FILE"
  228. 3290 [153] [163]3)MC$"(null)"[163]8)CC$"(null)OAD AND RWAITUN THIS FILE"
  229. 3300 [153] [163]3)MC$"(null)"[163]8)CC$"(null)OAD AND SWAITYS TO THIS (null)(null) FILE"
  230. 3310 [153] BC$"LENOMMANDS ON THE COMMAND LINE:"
  231. 3320 [153] [163]3)MC$"ATN"[163]8)CC$"LENHANGE TO AWAITUTO MODE"
  232. 3330 [153] [163]3)MC$"PEEK"[163]8)CC$"(null)AGE BWAITACKWARDS IN LIST"
  233. 3340 [153] [163]3)MC$"LEN"[163]8)CC$"LENHANGE DISPLAY CWAITOLOURS"
  234. 3350 [153] [163]3)MC$"STR$"[163]8)CC$"LENHANGE DWAITISK DEFAULTS"
  235. 3360 [153] [163]3)MC$"ASC"[163]8)CC$"(null)AGE FWAITOREWARD IN LIST"
  236. 3370 [153] [163]3)MC$"LEFT$"[163]8)CC$"STR$ISPLAY HWAITELP PAGE"
  237. 3380 [153] [163]3)MC$"(null)"[163]8)CC$"LENHANGE TO MWAITANUAL MODE"
  238. 3390 [153] [163]3)MC$"(null)"[163]8)CC$"ASCORCE A DIRECTORY RWAITELOAD"
  239. 3400 [153] BC$"LENOMMANDS ANYWHERE:"
  240. 3410 [153] [163]2)MC$"LENSR"[163]8)CC$"LENURSOR CONTROL KEYS"
  241. 3420 [153] [163]2)MC$"(null)TN"[163]8)CC$"(null)ETURN MEANS EXECUTE - EXIT"
  242. 3430 [153] [163]8)"IF NO COMMANDS BESIDE FILES"
  243. 3440 [153] [163]2)MC$"LEFT$OME"[163]8)CC$"CHR$O TO TOP FILE NAME"
  244. 3450 [153] [163]2)MC$"STR$EL"[163]8)CC$"STR$ELETE LAST KEY"
  245. 3460 [153] [163]3)MC$"_"[163]8)CC$"VALSCAPE FROM DATA ENTRY"
  246. 3470 [153] T$(24)BC$"(null)RESS (null)VAL(null)(null)(null)(null) TO CONTINUE";
  247. 3480 [161] A$: [139] A$[179][177]R$ [167] [137] 3480
  248. 3490 [137] 1790
  249. 3500 [143]
  250. 3510 [143]---INPUT NUMERIC STRING--------
  251. 3520 [143]
  252. 3530 AA[178]A: [151] 198,0
  253. 3540 [153] CP$;: X$[178]""
  254. 3550 [141] 1220: I[178][198](A$)
  255. 3560 [139] I[178]95 [167] XX[178][171]1: A[178]AA: [142]
  256. 3570 [139] I[179]48 [176] I[177]57 [167] [137] 3600
  257. 3580 [153] A$;: X$[178]X$[170]A$: [139] [195](X$)[177]10 [167] [137] 3540
  258. 3590 [137] 3550
  259. 3600 [139] I[178]13 [167] XX[178][197](X$): A[178]AA: [142]
  260. 3610 [139] I[179][177]20 [167] [137] 3550
  261. 3620 I[178][195](X$): [139] I[178]0 [167] [137] 3550
  262. 3630 [153] A$;: [139] I[178]1 [167] [137] 3540
  263. 3640 X$[178][200](X$,I[171]1): [137] 3550
  264. 3650 [143]
  265. 3660 [143]---INPUT CHAR STRING-----------
  266. 3670 [143]
  267. 3680 AA[178]A: [151] 198,0
  268. 3690 [153] CP$;: X$[178]""
  269. 3700 [141] 1220: I[178][198](A$)
  270. 3710 [139] I[178]95 [167] X$[178]"": A[178]AA: [142]
  271. 3720 [139] I[178]13 [167] A[178]AA: [142]
  272. 3730 [139] I[179][177]20 [167] [137] 3770
  273. 3740 I[178][195](X$): [139] I[178]0 [167] [137] 3700
  274. 3750 [153] A$;: [139] I[178]1 [167] [137] 3690
  275. 3760 X$[178][200](X$,I[171]1): [137] 3700
  276. 3770 [139] I[179]32 [176] I[177]95 [167] [137] 3700
  277. 3780 [153] A$;: X$[178]X$[170]A$: [139] [195](X$)[177]16 [167] [137] 3690
  278. 3790 [137] 3700
  279. 3800 [143]
  280. 3810 [143]---END OF PROGRAM--------------
  281. 3820 [143]
  282. 3830 [153] ""[199](9);: [128]
  283.